Fixes for #143829, Tommi Komulainen, Christian Persch:
authorMatthias Clasen <mclasen@redhat.com>
Wed, 16 Feb 2005 16:37:24 +0000 (16:37 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Wed, 16 Feb 2005 16:37:24 +0000 (16:37 +0000)
2005-02-16  Matthias Clasen  <mclasen@redhat.com>

Fixes for #143829, Tommi Komulainen, Christian Persch:

* gtk/gtktreeview.c (gtk_tree_view_destroy): Remove the
typeselect_flush_timeout when destroying the widgets
it is operating on.
(gtk_tree_view_ensure_interactive_directory): Add the
popup to the window group of the toplevel it belongs to.

* gtk/gtkcombobox.c (gtk_combo_box_set_popup_widget)
(gtk_combo_box_popup): Do the same here.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-8
gtk/gtkcombobox.c
gtk/gtktreeview.c

index ead2d2efcdeba9d8591a9a2497d2bef120419703..6d6831f6080858c78f6a9d7b22d0de42a60b61b1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2005-02-16  Matthias Clasen  <mclasen@redhat.com>
+
+       Fixes for #143829, Tommi Komulainen, Christian Persch:
+       
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): Remove the
+       typeselect_flush_timeout when destroying the widgets
+       it is operating on.  
+       (gtk_tree_view_ensure_interactive_directory): Add the 
+       popup to the window group of the toplevel it belongs to.
+
+       * gtk/gtkcombobox.c (gtk_combo_box_set_popup_widget) 
+       (gtk_combo_box_popup): Do the same here. 
+
 2005-02-14  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Kill --enable-ansi  (#164394)
index ead2d2efcdeba9d8591a9a2497d2bef120419703..6d6831f6080858c78f6a9d7b22d0de42a60b61b1 100644 (file)
@@ -1,3 +1,16 @@
+2005-02-16  Matthias Clasen  <mclasen@redhat.com>
+
+       Fixes for #143829, Tommi Komulainen, Christian Persch:
+       
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): Remove the
+       typeselect_flush_timeout when destroying the widgets
+       it is operating on.  
+       (gtk_tree_view_ensure_interactive_directory): Add the 
+       popup to the window group of the toplevel it belongs to.
+
+       * gtk/gtkcombobox.c (gtk_combo_box_set_popup_widget) 
+       (gtk_combo_box_popup): Do the same here. 
+
 2005-02-14  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Kill --enable-ansi  (#164394)
index ead2d2efcdeba9d8591a9a2497d2bef120419703..6d6831f6080858c78f6a9d7b22d0de42a60b61b1 100644 (file)
@@ -1,3 +1,16 @@
+2005-02-16  Matthias Clasen  <mclasen@redhat.com>
+
+       Fixes for #143829, Tommi Komulainen, Christian Persch:
+       
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): Remove the
+       typeselect_flush_timeout when destroying the widgets
+       it is operating on.  
+       (gtk_tree_view_ensure_interactive_directory): Add the 
+       popup to the window group of the toplevel it belongs to.
+
+       * gtk/gtkcombobox.c (gtk_combo_box_set_popup_widget) 
+       (gtk_combo_box_popup): Do the same here. 
+
 2005-02-14  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Kill --enable-ansi  (#164394)
index 8898c766d94cfbd31838d237e412b3d660180e04..4b79d511ae14e5b458421074a7e062d380d8714d 100644 (file)
@@ -1136,7 +1136,15 @@ gtk_combo_box_set_popup_widget (GtkComboBox *combo_box,
     {
       if (!combo_box->priv->popup_window)
         {
+         GtkWidget *toplevel;
+         
           combo_box->priv->popup_window = gtk_window_new (GTK_WINDOW_POPUP);
+
+         toplevel = gtk_widget_get_toplevel (combo_box);
+         if (GTK_IS_WINDOW (toplevel))
+           gtk_window_group_add_window (_gtk_window_get_group (GTK_WINDOW (toplevel)), 
+                                        GTK_WINDOW (combo_box->priv->popup_window));
+
          gtk_window_set_resizable (GTK_WINDOW (combo_box->priv->popup_window), FALSE);
           gtk_window_set_screen (GTK_WINDOW (combo_box->priv->popup_window),
                                  gtk_widget_get_screen (GTK_WIDGET (combo_box)));
@@ -1580,7 +1588,8 @@ gtk_combo_box_popup (GtkComboBox *combo_box)
 {
   gint x, y, width, height;
   GtkTreePath *path, *ppath;
-  
+  GtkWidget *toplevel;
+
   g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
 
   if (GTK_WIDGET_MAPPED (combo_box->priv->popup_widget))
@@ -1592,6 +1601,11 @@ gtk_combo_box_popup (GtkComboBox *combo_box)
       return;
     }
 
+  toplevel = gtk_widget_get_toplevel (combo_box);
+  if (GTK_IS_WINDOW (toplevel))
+    gtk_window_group_add_window (_gtk_window_get_group (GTK_WINDOW (toplevel)), 
+                                GTK_WINDOW (combo_box->priv->popup_window));
+
   gtk_widget_show_all (combo_box->priv->popup_frame);
   gtk_combo_box_list_position (combo_box, &x, &y, &width, &height);
   
index 3eb8b81397dd5440db8360d6cdf7393054691a1c..e4db02d40836d1d2d43806e03e99f5037f996e44 100644 (file)
@@ -1388,6 +1388,11 @@ gtk_tree_view_destroy (GtkObject *object)
       gtk_widget_destroy (tree_view->priv->search_window);
       tree_view->priv->search_window = NULL;
       tree_view->priv->search_entry = NULL;
+      if (tree_view->priv->typeselect_flush_timeout)
+       {
+         g_source_remove (tree_view->priv->typeselect_flush_timeout);
+         tree_view->priv->typeselect_flush_timeout = 0;
+       }
     }
 
   if (tree_view->priv->search_destroy)
@@ -8893,13 +8898,27 @@ send_focus_change (GtkWidget *widget,
 static void
 gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view)
 {
-  GtkWidget *frame, *vbox;
+  GtkWidget *frame, *vbox, *toplevel;
 
-  if (tree_view->priv->search_window != NULL)
-    return;
+  toplevel = gtk_widget_get_toplevel (GTK_WIDGET (tree_view));
 
+   if (tree_view->priv->search_window != NULL)
+     {
+       if (GTK_WINDOW (toplevel)->group)
+        gtk_window_group_add_window (GTK_WINDOW (toplevel)->group,
+                                     GTK_WINDOW (tree_view->priv->search_window));
+       else if (GTK_WINDOW (tree_view->priv->search_window)->group)
+        gtk_window_group_remove_window (GTK_WINDOW (tree_view->priv->search_window)->group,
+                                        GTK_WINDOW (tree_view->priv->search_window));
+       return;
+     }
+   
   tree_view->priv->search_window = gtk_window_new (GTK_WINDOW_POPUP);
 
+  if (GTK_WINDOW (toplevel)->group)
+    gtk_window_group_add_window (GTK_WINDOW (toplevel)->group,
+                                GTK_WINDOW (tree_view->priv->search_window));
+
   gtk_window_set_modal (GTK_WINDOW (tree_view->priv->search_window), TRUE);
   g_signal_connect (tree_view->priv->search_window, "delete_event",
                    G_CALLBACK (gtk_tree_view_search_delete_event),